﻿/**********************************************************************
 * @file   OperSpectrogramResult.h
 * @brief  后处理云图操作器声明
 * @author liuzhonghua (liuzhonghuaszch@163.com)
 * @date   2025-03-04
 *********************************************************************/
#ifndef _OperSpectrogramResult_H_
#define _OperSpectrogramResult_H_

#include "FITK_Kernel/FITKCore/FITKActionOperator.h"
#include "FITK_Kernel/FITKCore/FITKOperatorRepo.h"

namespace GUI
{
    class PreWindow3D;
}

namespace Acoustics
{
    class FITKAcousticsContourPlotData;
}

namespace GUIOper
{
    /**
     * @brief  后处理云图操作器
     * @author liuzhonghua (liuzhonghuaszch@163.com)
     * @date   2025-03-04
     */
    class OperSpectrogramResult :public Core::FITKActionOperator
    {
        Q_OBJECT;

    public:
        /**
         * @brief   Construct a new OperSpectrogramResult object
         * @author  liuzhonghua (liuzhonghuaszch@163.com)
         * @date    2025-03-04
         */
        explicit OperSpectrogramResult() = default;

        /**
         * @brief   Destroy the OperSpectrogramResult object
         * @author  liuzhonghua (liuzhonghuaszch@163.com)
         * @date    2025-03-04 
         */
        virtual ~OperSpectrogramResult() = default;

        /**
         * @brief 执行
         * @return true 成功
         * @return false 失败
         * @author  liuzhonghua (liuzhonghuaszch@163.com)
         * @date    2025-03-04 
         */
        virtual bool execGUI() override;

        /**
         * @brief 执行结果处理
         * @return true 成功
         * @return false 失败
         * @author  liuzhonghua (liuzhonghuaszch@163.com)
         * @date    2025-03-04 
         */
        virtual bool execProfession() override;

    protected:
        /**
         * @brief    获取后处理云图参数数据对象
         * @param[i] widget3D
         * @return   参数数据对象
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2025-03-04 
         */
        Acoustics::FITKAcousticsContourPlotData* getContourPlotDataBy3DWidget(GUI::PreWindow3D* widget3D);

    };

    // 按钮注册相关操作
    Register2FITKOperatorRepo(actionSpectrogramResult, OperSpectrogramResult);

}

#endif // OperSpectrogramResult_H
